perm filename SCHED[P,JRA]7 blob sn#585756 filedate 1981-05-13 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00010 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	notes
C00005 00003
C00006 00004		EECS 129
C00011 00005	week 1: start the "where" (we're going)
C00014 00006			Part zero: interactive computing  
C00018 00007		Part one: Functions as passive objects
C00025 00008		Part two: Functions as active objects
C00027 00009		Part 3: applications and implications
C00028 00010			  EECS 129: The Art of Computer Science
C00036 ENDMK
CāŠ—;
notes

art
music
architecture
rhetoric
linguistics
history
anthro
phil
bio
physics
math
cs
eng
phisiology: homer smith

take susman example in "constraints"
see zen pp 332
?quality in obj?
?quality in prog?

relate godel, einstein, jmc and time??


--------------------------------------------
"non-technical" considerations

Does "computing" represent a "new culture" in the sense of spengler?

is there any "sense" to spengler?

--------------------------------------------
lab stuff

disks

paper

manuals

projects

first day stuff:
 name, major,  what you expect from this course.

 idea for project, if you have one.
--------------------------------------------
lisp:
an object-oriented  language in which
   objects have "first-class" standing.

an object is an abstraction whose identity
   can be described such that one can
   recognize the existence of an obj
    how?
      1. recognizer
      2. constant
   construct a new one, given the necessary components
    how?
      constructor
   select its components 
    how?
     1. atomic and has no components
     2. composite and have selectors

interesting object in lisp:
  function!!!!!

--------------------------------------------

relate 432
--------------------------------------------
auto:horse = x: computer ---what's "x"?

what is mathematics?

people to ask, chowning, fred, avron, bil lewis,

Navy
68k
 steamer
model ii  multi-bank
 cai

intelligent systems
prime
 automated drafting
 data bases

ti
lisp machine
 portable 
 real-time
 

national
16K
 open

rolm
8086
 office automation

tlc 
applications
 education  (cf. logo/smalltalk)
 ai (visicalc)

people:
 2 senior-full
 2 mid-half


----------------------
mapper-based memory
ti-based lm
	EECS 129

class notes:
	  lisp notes: draft of book by JRA
	  interactive computing: paper by JRA
	  West Coast Computer Faire papers

journal papers:	the ACM Turing lectures, in particular: Minsky, Scott-Rabin, 
	Iverson, Newell-Simon, Floyd, Perlis, Backus, McCarthy.

books:  Zen and the art of motorcycle maintenance --Robert Pirsig
	 read it at least three times this term

	Mindstorms -- Seymour Papert
	 what CAN be done with computing, if you try.

	Godel, Escher, Bach  -- Doug Hofstadter
	 an interesting view of mathematics, music, and art. 
   	   prelude to Godel's incompleteness results (much
	   better handled in LISP)

	Jean Piaget -- Margaret Boden
	 particularly the last chapters (Piaget and X)

	Anatomy of LISP -- John Allen
	 computer science from the LISP perspective

	Functional Programming -- Peter Henderson
	 simplified version of LISP

	The Gamesman(?) -- Michael Maccoby
	 interesting view of how modern corporations view themselves,
	   particularly the role of the "craftsman"

	Decline of the West(?) -- Oswald Spengler
	 philosophy of history, relating the "life" of a culture in terms
	   of its view of mathematics.

	Men of Mathematics --E T. Bell
	 good perspective on the mathematical world

	History of Western Philosophy -- B. Russell
	 Russell's "unbiased" view of the philosophical world

	General Systems Theory reference needed

	Kamongo: The Lungfish and the Padre -- Homer Smith
	  a physiologist's "novel" about life and evolution

	From Fish to Philosopher --Homer Smith
	  the kidney: from amoeba to Kant.

	The Sufis --Idries Shah
	  another view of the world

	Don Juan  in Hell (act three of man and superman) --G B Shaw
	  GBS on life

	Computer Power and Human Reason -- Joe Weizenbaum 
	  sigh! some very good, some very BAD!  
	  hysterical opportunism, in general.

software:  mince: a display-based editor (Mince Is Not Complete Emacs)
	   logo: graphics-based  sugar-coated functional language.
	   lisp: vanilla-flavored functional language.
	   visicalc: elegant constraint-based business package.
	   mu-math: symbolic mathematics package (micro-Macsyma)
	   zork: second generation Adventure--shows natural language input
		 and complex organization.
	   db lang: reasonable relational/ai-based db language --TBA

Each Friday we will summarize the week and integrate technical
  aspects into the larger view of that makes these results relevant.

guest speakers:
*   Smalltalk: Dr. Adele Goldberg, Learning Research Group, Xerox PARC
*   Rubiks cube: Dr. Tom Davis, Stanford
	         Bernie Greenberg video tape of CubeSys--see March issue of
			Scientific American
?   Philosophy: Dr. Art Chandler, San Francisco State University
?   The Pre-socratics: Dr. Lois Flynne, San Francisco State University
*   Graphics/music: Scott Kim, Stanford University
*   Zork: Dr.Bruce Daniels, Apple Computer
?   Godel, Escher, Bach: Dr. Doug Hofstadter, Stanford University
*   Theory: Dr. Vaughan Pratt, Stanford and MIT
?   Music: Dr. John Chowning, Stanford University
    geb: ***

?   expert systems
?   visicalc
?   vlsi
week 1: start the "where" (we're going)
M overview; read  zen
   where
   what
   how
   wow
T read mindstorms ch 1-2
TH discuss MS 1-2
F read MS 3

lab logo


week 2: start the "what" (is computation)
M  discuss MS 3
   start the computational ideas  
	use geb, and formal theory  ideas
T
TH ms 4
F
lab: mince
     logo
     visicalc (?)  
     mu-math (?)   
     LISPs

week 3: start the "how" (it's done)
M   how graphics   ms 5-6   
T
TH  how lisp (computation) ms 7-*
F

lab: lisp

week 4: evaluation and computation
M
T
TH 
F

lab: more lisp/logo

week 5:  object-oriented programming
M
T
TH 
F

lab:

week 6:   applications and implications
M
T
TH 
F

lab:

week 7:  architecture and implementation
M  
T    
TH  
F

lab:

week 8 - end:  guest speakers:
*   Smalltalk: Dr. Adele Goldberg, Learning Research Group, Xerox PARC
*   Rubiks cube: Dr. Tom Davis, Stanford
	         Bernie Greenberg video tape of CubeSys--see March issue
			of Scientific American
?   Philosophy: Dr. Art Chandler, San Francisco State University
?   The Pre-socratics: Dr. Lois Flynne, San Francisco State University
*   Graphics/music: Scott Kim, Stanford University
*   Zork: Dr.Bruce Daniels, Apple Computer
?   Godel, Escher, Bach: Dr. Doug Hofstadter, Stanford University
*   Theory: Dr. Vaughan Pratt, Stanford and MIT
?   Music: Dr. John Chowning, Stanford University
    geb: ***

?   expert systems
?   visicalc
?   vlsi
		Part zero: interactive computing  

Peace of Mind: "Assembly of Japanese bicycle require [sic] great peace of mind"

Computing is the wrong word! --EXPRESSION?
 compare: Automobile       ??
	  ----------   =   ---
     horseless carriage    computer

low expectations, based on economics of last 20 years
 graphics  vs. keypunch
  the unfortunate re-creation of 1965 on micros.
 kids  (of all ages)
 LOGO, Smalltalk, PIE
 Lisp as explainer
  Lisp ≔ object-oriented language 
         with all objects "1-st class"
          (e.g. programs as objects)

Methodology vs. Style
  interactive composition vs. programming
    composition
     creative rhetoric
      the rationale
      the tools: instrument-like (H Smith)
      the effect: ego-less
  weizenbaum's anti-hacker view

  programming
     what does programming represent?
      ways of thinking (algorithmically)
       read minsky's turing lecture
       simulation of complex phenom.
     can programmers be literate?
       literacy=?
   Notation
 	The role of notation in science
	 expressivity
	 subordination of detail
	 economy
	 amenability to proof
	The impact of computing on notation
	 executability
	 representability of algorithms
	The difficulties with programming languages

  Computation and interaction
	The relationship between language and its medium
	 why computing languages cannot be separated
	   from the programming env
	 cf. conversation and understanding
	The polarization between interaction and discipline
	 pascal vs. lisp  vs. smalltalk
	The polarization between rigor and interaction
	 where does the discipline lie?
	Basic vs. lisp

	Part one: Functions as passive objects
 
   The language
 	Data domain: The whole numbers
	Algorithmic notation
	 conditional expressions
	 definitions
	   recursion
	 numerical examples
	computation as deduction
	   axioms for number theroy
	   rules of inference
	     substitution and simplification
		number theory
		conditional
	   the concept of proof
	    equivalence
	    termination
	computation as controlled deduction
	  substitution before: cbn
	  simplification before: cbv
            actually substitutivity of =
		indistinguishibility of = objs.
	truth, computation, and deduction
	  what is truth?
	   truth versus deduction
	    incompleteness results
	     the appropriate language
	      elementary number theory
   	      something better


	Data domains: abstract objects
	 constructors, selectors, and recognizers
	Data Domain: graphics
	 LOGO and Turtle geometry
	abstraction and representation:
	      finite sets    		 finite sequences

	  sets build functions     sequences build computation


	Data Domain: symbolic expressions
	 the representability of programs
	The mapping of expressions to data structures
	Non-numeric computation: examples
	  evaluation of polynomials
	  simplification of algebraic expressions
	  turtle geometry

   Evaluation
 	Deduction vs computation, again
	 systems for substitution and simplification
	  simulation of substitution
	    symbol tables as objects
	 computation as controlled deduction again
	 call-by-name vs. call-by-value
	Semantics of programming languages
	  axiomatic
	  operational
          model-theoretic
	Representability of programs
	 a detailed discussion
	An evaluation algorithm
	 The operational view
	Implementation strategies
	 call-by-value
	 weak vs. strong conditional
	 simulation of substitution
	extending the evaluator
;	 macros and read-macros: abbreviational convenience
;	 iteration: language extension and special forms
	

   A modern LISP: more data structuring
 	The idea of "first-class data"
	implementation-driven languages violate notational principles
	abstract object: their representation
	 arbitrary precision numbers
 	 Strings
	 Arrays
;	 property-lists (flex records)
;	modules/labels: organizational

   Property-lists and message passing
	classes as properties
	algorithms as message passing
	hierarchies and flavors
	  hierarchies as implementation simplification

   Object-oriented programming
  	Smalltalk and Actors
	frames and flavors

Computer Science Issues

   Lexical vs dynamic scoping: the beginnings of active functions
	Evaluation revisited
	 functionals
	 the difficulty with functional arguments
	 variables: local, free, global
	 added complexity of functional values

   Control: function vs algorithm
	an analysis of the evaluator
	 the run-time structure
	   stacks
	   stacks+access and control links
	   tree access, control stack
	   tree access, tree control
	control as data: reflective/introspective systems

   Applicative v.s. imperative
	control as a programming tool
	 side-effects
	  assignment, rplaca, rplacd

   Implementation considerations
	implementation of the evaluation process
	 read
	  parsers and scanners
	   searching and hashing
	 print
	runtime language support
 	 i-j pairs
	 shallow versus deep
	run-time data support
	 numbers
	 arbitrary precision numbers
	 trees
	  programmer maintained
	  reference counting
	  garbage collection
	   mark sweep
	   copy-compacting
	    cheney
	    baker
	    lieberman&hewitt

   High-levl Machines and translators
  	The LISP machine
	Traditional machines as microcode
	Object-oriented architectures
	  Smalltalk
	  Intel 432
	Compilation
	 program representation
	  list structure
	  scheme hacks
	  p-code/byte code/MACRO
	  machine specific
	Hardware
	  LISP machine
	  Scheme chips

	Part two: Functions as active objects

1  Functions as first-class objects
  	Relationship between 
	  purity:lexical scoping
	  utility: dynamic scoping
	interactive creation of functional objects
	 programming in "levels": modules
		
2  Applications of functional objects
     message passing, Smalltalk classes, and LOGO turtles
	how they work
     car,cdr, cons as:
	1. arrays and functional
	2. pure functional  (t, f)
	3. 1 as msg passing
3    stacks as functionals 
4    multiprocessing as functional operations

5  Evaluation of Functionals
	evaluators for full funarg 
	evaluators for smalltalk (ingalls)


	Part 3: applications and implications


6  Applications of lisp and object-oriented computing
	Computer Aided Design
	Natural Language
	business data bases 

7  The future of computing
	interactive programming
	language designs
	theory
	AI applications
		  EECS 129: The Art of Computer Science


This course  is  a  challenge. I  plan  to  challenge your  conception  of  what
computing is about, to challenge the traditional view of the purpose of programming
languages, to challenge  the usual conception  of how one  does programming,  to
challenge the traditional curriculum of  computing, and in general to  challenge
your minds.

The  course  is  neither  mathematics  nor  engineering;  it  draws  from   both
disciplines, as does all  of computer science.  The intent of  the course is  to
investigate the phenomena called computing at  a level of abstraction that  will
allow us to explicate fundamental principles that underlie computing theory and
practice.

The texts for this course are "Zen  and the Art of Motorcycle Maintenance",  and
"Mindstorms: Computers, Children,  and Powerful Ideas".   Class notes will  form
the main structure  of the technical  and "meta-computational" perspective  that
supports the inquiry.  "Zen" has valuable insights in the relationships  between
art and science, besides the  appropriate "tone" for this course.   "Mindstorms"
is good fun:  an exemplary book showing how one can present complex ideas in  an
intuitive, yet faithful, setting.

A lab session  is associated with  this course.  Since  part of our  exploration
involves computing,  it  is  a  requirement that  one  understands  the  art  of
computing --often called "programming". Learning to program is like learning  to
drive --both  can  profit from  classroom  work that  explains  basic  concepts.
However both require "hands-on" experience before one really gets "the feel"  of
the instrument.  As with driving school, we should supply the students with  the
best available vehicles and guide them in the process of applying the theory.

There are two important practical lessons in the programming experience:   first
to develop an appreciation for abstraction and abstract programming, and  second
to develop  an understanding  of how  interactive programming  differs from  the
traditional   "batch"   (or   modified   "batch")-processing  view.     Abstract
object-oriented  programming   carried  out   in  an   interactive   programming
environment is the future of applied computing.

The course will  be a  self-contained "mind-stretcher":   no prerequsites  other
than a  healthy  intellectual  curiousity  and  the  self-discipline  to  think.
However, the work will be demanding, so it is suggested that you have at least a
3.0 G.P.A.  in your major.

WHAT I EXPECT:   A lot! Though  the course  will be self-contained,  I will  not
"spoon-feed" you.  You  will be  expected to delve  into areas  other than  your
major course of study:  mathematics, philosophy, education, art, and history are
all fair game.  Hopefully, there will  be a sufficiently  diverse background  in
this class that knowledge can be pooled. If  not, you (and I) will have to  dig.
If you have questions, understand where  you lost track; simply saying "I  don't
get it" is not satisfactory.

COURSE WORK: Show  up every day!  Do not get  behind! By the  end of the  fourth
week, have a project outline ready to turn in and discuss with me in a 15 minute
interview.

Possible areas for topics: history, philosophy, education, mathematical theory
of computation, language design, machine architecture, language implementation,
applications (graphics, art, artificial intelligence).

COURSE GRADING:  Difficult!  Some  programming,  some  "fact  extraction",  some
essays. Style and quality will count in all these efforts.

Programming = 10%

Midterm = 30%

Project = 30%

Final = 30%


GENERAL DISCLAIMER If  you are one  of those  students who feels  that the  only
grade is an "A" and will drop if your GPA is threatened, then this course is not
for you.  For you  "late dropper"s: be considerate  and drop early. Don't  waste
your time or hold a slot in this class that someone else might use.  Who  knows,
I might not sign drop slips!?!

COURSE READING: There is a list of required and suggested books for this class.

***NO WRITING IN THE LIBRARY BOOKS, DAMN IT*** Some illiterate slob destroyed
the library copy of "Don Juan in Hell".

COURSE  LAB:   This  area  requires  the  most  cooperation  from  everyone.
Resources are very limited,  though there's reason to  believe that things  will
improve.  All resources --machines, documentation, and disks-- are at a premium;
most things are borrowed, so be particularly careful.